iT邦幫忙

2021 iThome 鐵人賽

DAY 13
0

有一陣子常常把KNN和K-means搞混,今天來聊聊兩者的區別~

KNN(k-nearest neighbors)

KNN是supervised算法,主要解決分類問題。
算法就跟他的名字一樣直觀,去找最近的點來標記新資料,主要的參數為K,也就是我們要抓取k個相近的資料點來標示新的資料,假設我們設定k=3,那就是將想標示的資料點抓取離他最近的3個training data,如果是classification,則採用投票制(多數決),若是regression就使用平均數。因為KNN是透過距離來計算,所以在應用時要記得先normalize。另外,如果資料中有極端值,選擇大一點可K可以降低極值的影響。通常K會落在5-10之間。

K-means

K-means是unsupervised算法,主要解決聚類問題(cluster)。
因為是unsupervised,所以放進去的資料本身並沒有label,主要的參數也稱為K,但這裡的K是指我們想要把資料分成K組。主要的算法為:先將training data隨機分成k組,然後計算每一組的中心點,接著對每一個點來將他分類到與他最近的中心點的組別(要注意每當歸類一個新的點到新的組時,中心點會改變),就這樣分類直到每個點都在離他最近的組中。因為算法中也牽涉到距離,所以在應用時也要記得先normalize。

[今日心得]
今天去爬了17小時的山,加上開車時間已經22個小時了(剩兩個小時是睡覺時間),所以導致今天文章有點短,之後有空會來把一些python例子補上~


上一篇
分類模型哪個好?ROC/ AUC
下一篇
如何避免Overfitting
系列文
Python 機器學習實驗室 ʘ ͜ʖ ʘ30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言